// La búsqueda de librerías en el IDE arduino funciona un tanto raro. No debería ser necesario incluir aquí
// las librerías que se usan en los cpp del sketch, pero según algunos foros hay algún problema y hay
// que ponerlas aquí también
#include <EEPROM.h>
#include <Flash.h>   // ver http://scott.dd.com.au/wiki/Arduino_Static_Strings y
                    // http://arduiniana.org/libraries/Flash/
                    
#include <LiquidCrystal_I2C.h>                    
#include <Wire.h>
                    
#include "gprs.h"
#include "Setup.h"
#include "macros.h"
#include "lcd.h"

#include <pnew.cpp> //new para las STL
#include <string> // no es el string normal sino el de STL

//  -------- DIGITALES ----------------------------------------

//Pines para los LED de temperatura
const int pinLed1 = 8;
const int pinLed2 = 9;
const int pinLed3 = 10;
const int pinLed4 = 11;
const int pinLed5 = 12;
 
// Data wire is plugged into pin ONE_WIRE_BUS on the Arduino
#define ONE_WIRE_BUS 6

//pin altavoz
const int buzzerPin = 7;
//pin altavoz
const int speakerOut = 7;

//pines para el gprs
#define GPRS_STATUS_LED_PIN 13
#define GPRS_SWITCH_PIN 2  // pin para activar el módulo GPRS


// -------- ANALÓGICOS -------------------------
//Pines para las entradas analógicas
const int thresholdLevelPin = 1;


// -----OTRAS CONSTANTES -----------------
#define LOOP_DELAY            500 //mseg
#define SMS_CHECK_PERIOD       90 //seg
#define FLOAT_DECIMAL_PLACES    2
#define SERIAL_BAUDRATE     57600
 
#define LCD_ROWS 2
#define LCD_COLS 16 
 
// ----------- VARIABLES GLOBALES ---------------------

unsigned long runningTime;
unsigned long lastSmsCheckTime;
const float sensitivity = 0.5; //Escala de Avisos: salto en grados para encender un led más


Lcd lcd(LCD_ROWS, LCD_COLS);
Gprs gprs(GPRS_SWITCH_PIN, GPRS_STATUS_LED_PIN);


#define COVERAGE_H 0
#define COVERAGE_M 1
#define COVERAGE_L 2
#define COVERAGE_X 2

byte coverageH[8] = {
        B11101,
        B01001,
        B01011,
        B00011,
        B00111,
        B00111,
        B01111,
        B11111
};

byte coverageM[8] = {
        B11100,
        B01000,
        B01000,
        B00000,
        B00100,
        B00100,
        B01100,
        B11100
};
byte coverageL[8] = {
        B11100,
        B01000,
        B01000,
        B00000,
        B00000,
        B00000,
        B01000,
        B11000
};

byte coverageX[8] = {
        B10100,
        B01000,
        B10100,
        B00000,
        B00000,
        B00000,
        B01000,
        B11000
};
